home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs10.d81
/
dark88-4.sfx
/
m.hayes.a1
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1990-02-12
|
5KB
|
250 lines
1000 REM * DARKTERM '88
1010 REM * HAYES MODEM FILE SOURCE
1020 REM *
1030 OPEN1,8,15,"S0:D'88.HAYES":CLOSE1
1040 OPEN2,8,1,"0:D'88.HAYES"
1050 SYS700
1060 .OPT O2
1070 ;
1080 CHKIN =$FFC6 ; KERNEL EQUATES
1090 CHKOUT =$FFC9
1100 CHRIN =$FFCF
1110 CHROUT =$FFD2
1120 CLRCHN =$FFCC
1130 GETIN =$FFE4
1140 ;
1150 PTR =138 ; TEMPORARY POINTERS
1160 ST =140
1170 PREFIX =930 ; DIALING PREFIX
1180 PRELEN =929 ; PREFIX LENGTH
1190 ;
1200 DETECT =922 ; CARRIER DETECT FLAG
1210 DDELAY =927 ; DIALING DELAY
1220 WDELAY =926 ; CARRIER WAIT DELAY
1230 HDELAY =925 ; ON-HOOK DELAY
1240 ;
1250 ; * SETTING THE INPUT/OUTPUTS *
1260 ; THE GVC I TESTED WITH SETS
1270 ; THE DDR REGISTER TO $84 HEX
1280 ; WHICH WOULD BE DSR AND DTR
1290 ; AS OUTPUTS AND THE REST AS
1300 ; INPUTS. I DUNNO IF THIS IS
1310 ; CORRECT. ACCORDING TO THE
1320 ; 64 REFERENCE MANUAL, RTS AND
1330 ; DTR SHOULD BE THE ONLY OUTPUTS
1340 ; LEMME KNOW WHAT THEY SHOULD
1350 ; BE IF THIS VALUE IS NO (null).
1360 ;
1370 *=$4500 ; STARTS HERE UP TO $47FF
1380 ;
1390 JMP ANSWER ; AUTO-ANSWER
1400 JMP DODIAL ; AUTO-DIAL
1410 JMP ONHOOK ; LABEL SAYS ALL
1420 JMP OFHOOK ; OFF HOOK
1430 JMP CARCHK ; LOST CARRIER CHECK
1440 JMP CUSTOM ; USER DEFINED ROUTINE
1450 JMP HANGUP ; HANGUP ROUTINE
1460 ;
1470 DODIAL LDA #$84
1480 STA $DD03 ; SET DDR REGISTER
1490 STX PTR ; X/Y POINT TO DIAL
1500 STY PTR+1 ; STRING (18 DIGITS)
1510 JSR RETURN ; SEND 2 <CR> TO BEGIN
1520 LDA HDELAY ; WAIT SOME
1530 JSR WAIT
1540 LDX #5
1550 JSR CHKOUT
1560 LDY #0
1570 DODO1 CPY PRELEN ; CHECK LENGTH
1580 BEQ DODO2 ; BEFORE SENDING IN CASE
1590 LDA PREFIX,Y ; THERE IS NO PREFIX
1600 JSR MODOUT
1610 INY
1620 BNE DODO1
1630 DODO2 LDY #0
1640 DODO3 LDA (PTR),Y ; GET STRING
1650 CMP #32 ; SKIP ALL BLANKS
1660 BEQ DODO4
1670 AND #127 ; MASK FOR ASCII
1680 JSR MODOUT
1690 DODO4 INY
1700 CPY #18 ; DO ALL 18 BYTES
1710 BNE DODO3
1720 LDA #13 ; SEND THE <CR>
1730 JSR MODOUT
1740 JSR CLRCHN
1750 LDA WDELAY ; AND WAIT FOR CARRIER
1760 JSR WAIT
1770 LDA 56577 ; HAVE ONE
1780 AND #16
1790 BNE DODO5 ; YES (BIT IS INVERTED)
1800 SEC ; NOT ABORTED, SET C FLAG
1810 LDA #0 ; NO CARRIER, SET Z FLAG
1820 RTS
1830 DODO5 SEC ; SET C FLAG
1840 LDA #1 ; CARRIER, CLEAR Z FLAG
1850 RTS
1860 ;
1870 WAIT TAX
1880 W0 JSR CLRTIM ; CLEAR TI CLOCK
1890 W1 LDA 145 ; CHECK STOP KEY
1900 CMP #$7F
1910 BEQ W2 ; IF PRESSED, ABORT
1920 LDA 162
1930 CMP #60 ; ONE SECOND
1940 BCC W1
1950 DEX ; X NUMBER OF TIMES
1960 BEQ W3
1970 BNE W0
1980 W2 PLA
1990 PLA
2000 CLC ; CLEAR C FLAG - USER ABORTED
2010 W3 RTS
2020 ;
2030 ONHOOK LDA #70 ; WAIT ONE SEC...
2040 JSR JIFFY
2050 LDX #5
2060 JSR CHKOUT
2070 LDA #"+" ; SEND +++ SEQUENCE
2080 JSR MODOUT
2090 JSR MODOUT
2100 JSR MODOUT
2110 JSR CLRCHN
2120 LDA #70 ; WAIT ONE MORE SEC...
2130 JMP JIFFY
2140 ;
2150 OFHOOK JSR SMART ; OFF-HOOK
2160 .ASC "ATD"
2170 .BYT 13,0
2180 RTS
2190 ;
2200 SMART LDA 56577 ; SEND AT COMMANDS
2210 AND #16
2220 BEQ SM1
2230 JSR ONHOOK ; HANG UP UNTIL NO
2240 JMP SMART ; CARRIER
2250 SM1 PLA ; GET STRING ADDRESS FROM
2260 STA ST ; RETURN ADDRESS
2270 PLA
2280 STA ST+1
2290 LDX #5
2300 JSR CHKOUT
2310 LDA #40 ; WAIT >.5 SEC...
2320 JSR JIFFY
2330 SM2 INC ST
2340 BNE SM3
2350 INC ST+1
2360 SM3 LDY #0
2370 LDA (ST),Y ; SEND COMMAND
2380 BEQ SM4
2390 JSR MODOUT
2400 JMP SM2
2410 SM4 JSR CLRCHN
2420 LDA #40 ; WAIT SOME MORE
2430 JSR JIFFY
2440 LDA ST+1 ; PUSH NEW RETURN ADDRESS
2450 PHA
2460 LDA ST
2470 PHA
2480 RTS
2490 ;
2500 MODOUT JSR CHROUT
2510 MODO1 LDX 669 ; WAIT FOR RS232 TO
2520 CPX 670 ; (null) IDLE BEFORE SENDING
2530 BNE MODO1 ; AGAIN
2540 RTS
2550 ;
2560 RETURN LDX #5
2570 JSR CHKOUT
2580 LDA #13
2590 JSR MODOUT
2600 JSR MODOUT
2610 JMP CLRCHN
2620 ;
2630 CUSTOM RTS ; NONE NEEDED FOR 1670
2640 ;
2650 CARCHK BIT DETECT ; IF DETECT IS
2660 BPL CAR1 ; 0 THEN IGNORE CARRIER
2670 LDA $DD01
2680 AND #16
2690 BNE CAR1
2700 CLC ; DROPPED CARRIER
2710 RTS ; SO CLEAR C FLAG
2720 CAR1 SEC
2730 RTS
2740 ;
2750 CLRTIM LDA #0
2760 STA 160
2770 STA 161
2780 STA 162
2790 RTS
2800 ;
2810 JIFFY TAX ; WAIT SOME JIFFIES
2820 JSR CLRTIM
2830 JIF1 CPX 162
2840 BCS JIF1
2850 RTS
2860 ;
2870 ANSWER JSR RESET ; RESET MODEM
2880 ANS0 JSR SMART ; SEND AT ACK
2890 .ASC "AT H1 S0=1"
2900 .BYT 13,0
2910 LDX #5
2920 JSR CHKIN
2930 JSR GETIN
2940 PHA
2950 JSR CLRCHN
2960 PLA
2970 AND #127
2980 CMP #"0" ; WAIT FOR OKAY RESPONSE
2990 BNE ANS0
3000 ANS1 LDX #5
3010 JSR CHKIN
3020 JSR GETIN ; WAIT FOR NUMERICAL
3030 PHA ; RESPONSE
3040 JSR CLRCHN
3050 PLA
3060 AND #127 ; DISCARD BIT 7
3070 CMP #"1" ; 300 BAUD
3080 BEQ ANS2 ; YES
3090 CMP #"5" ; 1200 BAUD
3100 BEQ ANS3 ; YES
3110 JSR GETIN ; GET KEY FROM KEYBOARD
3120 CMP #0
3130 BEQ ANS1
3140 CLC
3150 RTS
3160 ANS2 LDX #<300
3170 LDY #>300
3180 BNE ANS4
3190 ANS3 LDX #<1200
3200 LDY #>1200
3210 ANS4 SEC
3220 RTS
3230 ;
3240 RESET LDA $29B
3250 STA $29C
3260 JSR SMART
3270 .ASC "ATZ"
3280 .BYT 13,0
3290 LDA #75
3300 JSR JIFFY
3310 LDA $29B
3320 STA $29C
3330 JSR SMART
3340 .ASC "AT V0 M0 X1"
3350 .BYT 13,0
3360 LDA #75
3370 JMP JIFFY
3380 ;
3390 HANGUP JSR ONHOOK ; SEND +++ SEQ.
3400 JSR SMART ; SEND COMMAND STRING
3410 .ASC "AT H0 S0=0"
3420 .BYT 13,0
3430 LDA $DD01
3440 AND #16 ; CHECK CARRIER
3450 BNE HANGUP ; STILL THERE, TRY MORE
3460 LDA $29B
3470 STA $29C
3480 RTS